package com.consumer.kafka.starter.core;


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * Consumer基础配置
 *
 * @author: xinyue
 * @date: 2021/6/23 14:24
 */
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class KafkaSource {

    /**
     * bootstrapServers： 默认 localhost:9092
     */
    private String bootstrapServers = "localhost:9092";

    /**
     * 用于服务端日志
     */
    private String clientId = "default";

    /**
     * 标识消费者的消费组
     */
    private String groupId = "default";

    /**
     * 心跳与消费者协调的间隔时间
     */
    private int heartbeatInterval = 3000;

    /**
     * 每次fetch请求时，server应该返回的最小字节数。如果没有足够的数据返回，请求会等待，直到足够的数据才会返回。默认 1
     */
    private int fetchMinSize = 1;

    /**
     * Fetch请求发给broker后，在broker中可能会被阻塞的（当topic中records的总size小于fetch.min.bytes时），此时这个fetch请求耗时就会比较长。这个配置就是来配置最多等待response多久。
     */
    private int fetchMaxWait = 500;

    /**
     * 需要在session.timeout.ms这个时间内处理完的条数 默认500
     */
    private int maxPollRecords = 500;

    /**
     * 自动同步offset 默认true
     */
    private boolean enableAutoCommit = false;

    /**
     * 会话的超时限制
     */
    private int sessionTimeoutMs = 10000 ;

    /**
     * 没有初始化的offset 消费 ealiest latest none 默认latest
     */
    private String autoOffsetReset = "latest";
}
